/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package org.corespring.restaurant.web.controller;

import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.corespring.restaurant.model.Evento;
import org.corespring.restaurant.model.Usuario;
import org.corespring.restaurant.service.EventoManager;
import org.corespring.restaurant.service.UsuarioManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;

/**
 *
 * @author Aldo
 */
@Controller
public class EventoController {

    EventoManager eventoManager;
    UsuarioManager usuarioManager;

    @Autowired
    public EventoController(EventoManager oEventoManager, UsuarioManager oUsuarioManager) {
        this.eventoManager = oEventoManager;
        this.usuarioManager = oUsuarioManager;
    }

    @RequestMapping("/adm_eventos.htm")
    public void adm_eventos(Model model, @ModelAttribute("Evento") Evento evento) {
		List<Evento> eventos = eventoManager.obtenerEventos();
                model.addAttribute("eventos", eventos);
                model.addAttribute("evento", evento);
    }

     @RequestMapping(value = "/adm_registroEvento.htm", method = RequestMethod.GET)
    public @ModelAttribute("evento") Evento obtenerEvento(
            @RequestParam(value = "idevento", required = false) String  idEvento, HttpServletRequest request) {
        if (idEvento == null) {
            return new Evento();
        }
        if (!(idEvento.isEmpty() || idEvento.equals(""))) {
            Evento evento = eventoManager.obtenerEventoById(Integer.parseInt(idEvento));
            if (evento == null) {
                return new Evento();
            }
            return evento;
        }
        return new Evento();
    }

    @RequestMapping(value = "/adm_registroEvento.htm", method = RequestMethod.POST)
    public String guardarEvento( @RequestParam(value = "cboEstado", required = false) char estado,
            @ModelAttribute("evento") Evento evento,
            BindingResult result, SessionStatus status) {
        Date fecha = new Date();
        String hora = fecha.getHours()+":"+fecha.getMinutes()+":"+fecha.getSeconds();
        Usuario usu = usuarioManager.obtenerUsuarioById("admin");

        evento.setEstado(estado);
        evento.setFreg(fecha);
        evento.setHreg(hora);
        evento.setUsuario(usu);

        eventoManager.grabarEvento(evento);
        return "redirect:adm_eventos.htm";
    }

    @RequestMapping("/adm_eliminarEvento.htm")
    public String eliminarEvento(
            @RequestParam(value = "idevento", required = false) int idevento) {
        eventoManager.eliminarEvento(idevento);
        return "redirect:adm_eventos.htm";
    }

    @RequestMapping("/eventos.htm")
    public void eventos(Model model, @ModelAttribute("Evento") Evento evento) {
		List<Evento> eventos = eventoManager.obtenerEventos();
                model.addAttribute("eventos", eventos);
                model.addAttribute("evento", evento);
    }

    @RequestMapping(value = "/eventosdet.htm", method = RequestMethod.GET)
    public @ModelAttribute("evento") Evento eventosDet(
            @RequestParam(value = "idevento", required = false) String  idEvento, HttpServletRequest request) {
        if (idEvento == null) {
            return new Evento();
        }
        if (!(idEvento.isEmpty() || idEvento.equals(""))) {
            Evento evento = eventoManager.obtenerEventoById(Integer.parseInt(idEvento));
            if (evento == null) {
                return new Evento();
            }
            return evento;
        }
        return new Evento();
    }
}
